#include <iostream>
#include <sys/types.h>
#include <signal.h>
#include <cassert>
#include <cstring>
#include <unistd.h>

using namespace std;

//./mykill 2 123
void Usage(char* str)
{
    cout << "\tUsage: \n\t";
    cout << str << "信号  进程id" << endl;
}

void handler(int signo)
{
    std::cout << "get a signal: " << signo << std::endl;
}

int cnt = 0;
void shandler(int signo)
{
    cout << "get a singal : " << signo << cnt << endl;
    exit(-1);
}
int main(int argc, char* argv[])
{
    signal(SIGALRM, shandler);
    alarm(1);//指定秒数之后，终止该进程,不重新设置的话，只会执行一次就退出，一次性a的
    while(1)
    {
        //cout << cnt++ << endl;//所以，IO的效率非常底下！！！！
        cnt++;
    }

    //sleep(3);
    //abort();//给自己发送6号信号,执行完之后，就退出程序
    // signal(6, handler);
    // while (true)
    // {
    //     sleep(2);
    //     abort();//c语言接口，执行完abort之后，循环不再继续，程序退出
    // }
    
    //signal(2, handler);//自动的每秒种执行一次handler
    //int n = 0;
    // while(1)
    // {
    //     //if(n == 5)
    //         raise(2);//5秒后给自己发送2号信号
    //     sleep(1);
    //     //n++;
    // }


    // if(argc != 3)
    // {
    //     Usage(argv[0]);
    //     exit(-1);   
    // }

    // int id = atoi(argv[2]);
    // int signal = atoi(argv[1]);
    // int n = kill(id, signal);//给指定的进程发送指定的信号
    // if(n != 0)
    // {
    //     cout << errno <<": " << strerror(errno) << endl;
    //     exit(1);
    // }


    return 0;
}